vector<int> searchRange(vector<int>& nums, int target)
{
    int n = nums.size();
    // 处理边界情况
    if(n == 0) return {-1, -1};

    // 1. 求第一个位置
    int left = 0, right = n - 1;
    while(left < right) // 不能写=
    {
        int mid = (left + right) / 2;
        if(nums[mid] >= target) right = mid;
        else left = mid + 1;
    }
    
    // left 或者是right 所指的位置有可能是最终结果
    if(nums[left] != target) return {-1, -1};
    int releft = left; // 记录第一个位置
    
    // 2.求终止位置
    left = 0, right = n - 1;
    while(left < right) // 不能写=
    {
        int mid = (left + right + 1) / 2;
        if(nums[mid] <= target) left = mid;
        else right = mid - 1;
    }
    return {retleft, left};
}